package com.winning.sjzc.sjjgl.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.winning.sjzc.sjjgl.dao.DataSetDao;
import com.winning.sjzc.sjjgl.entity.SJJXX;
import com.winning.sjzc.sjjgl.entity.SJYML;
import com.winning.sjzc.sjjgl.entity.SjjflEntity;
import com.winning.sjzc.sjjgl.entity.SjyxxEntity;
import com.winning.sjzc.sjjgl.service.DataSetService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class DataSetServiceImpl implements DataSetService {

    @Autowired
    private DataSetDao dsd;

    public PageInfo<SJJXX> queryDataSet(String yjlbdm, String sjjfldm, String sjjmc, int limit, int offset){
        PageHelper.startPage((offset/limit)+1,limit);
        Map<String, Object> map =new HashMap<>();
        if(StringUtils.isNotBlank(sjjfldm) ){
            map.put("sjjfldm", sjjfldm);
        }
        if(StringUtils.isNotBlank(yjlbdm) ){
            map.put("yjlbdm", yjlbdm);
        }
        map.put("sjjmc", sjjmc);
        List<SJJXX> queryElementListByPage = dsd.queryDataSet(map);
        PageInfo<SJJXX> page = new PageInfo<SJJXX>(queryElementListByPage);
        return page;
    }

    //查询版本号和发布日期
    public SJJXX queryBBHAndFBRQ(){
        SJJXX sjjxx = dsd.queryBBHAndFBRQ();
        return sjjxx;
    }

    //保存
    public  int saveDataSet(SJJXX sjjxx){
        String sjjdm = sjjxx.getSJJDM();
        String bbh = sjjxx.getBBH();
        SJJXX qssjxx = querySjjxxBySjjdmAndBbh(sjjdm,bbh);
        if(qssjxx != null ){
            return -1;
        }
        dsd.saveDataSet(sjjxx);
        return 1;
    }

    //修改
    @Override
    public int updateDataSet(SJJXX sjjxx) {
        dsd.updateDataSet(sjjxx);
        return 1;
    }

    //查询数据元目录
    @Override
    public PageInfo<SJYML> querySjyml(String sjjdm, String sjydm, int limit, int offset) {
        PageHelper.startPage((offset/limit)+1,limit);
        Map<String, Object> map =new HashMap<>();
        if(StringUtils.isNotBlank(sjjdm) ){
            map.put("sjjdm", sjjdm);
        }
        if(StringUtils.isNotBlank(sjydm) ){
            map.put("sjydm", sjydm);
        }
        List<SJYML> querySjyml = dsd.querySjyml(map);
        PageInfo<SJYML> page = new PageInfo<SJYML>(querySjyml);
        return page;
    }

    //删除数据元目录
    @Override
    public void deleteSjyml(List<SJYML> list) {

        dsd.deleteSjyml(list);
    }

    //保存数据元目录
    @Override
    public void updateSjyml(SJYML sjyml) {
        dsd.updateSjyml(sjyml);
    }

    //保存数据元目录
    @Override
    public void saveSjyml(List<SJYML> list) {
        dsd.saveSjyml(list);
    }



    //删除
    @Override
    public void deleteDataSet(String sjjdm, String bbh) {
        Map<String, Object> map =new HashMap<>();
        if(StringUtils.isNotBlank(sjjdm) ){
            map.put("sjjdm", sjjdm);
        }
        if(StringUtils.isNotBlank(bbh) ){
            map.put("bbh", bbh);
        }
        dsd.deleteDataSet(map);
    }

    //发布
    @Override
    public int publishDataSet(String bbh, String fbrq) {
        String fbxx = dsd.querySjjFbxxByBbh(bbh);
        if(fbxx != null ){
            return -1;
        }
        PageInfo<SJJXX> page =queryDataSet(null,null,"",Integer.MAX_VALUE,0);
        List<SJJXX> list = page.getList();
        dsd.publishDataSet(list);
        SJJXX sjjxx =new SJJXX ();
        sjjxx.setFBRQ(fbrq);
        sjjxx.setGXSJ(fbrq);
        sjjxx.setBBH(bbh);
        dsd.pubAndUpdateDataSet(sjjxx);
        return 1;
    }


    @Override
    public SJJXX querySjjxxBySjjdmAndBbh(String sjjdm, String bbh) {
        Map<String, Object> map =new HashMap<>();
        if(StringUtils.isNotBlank(sjjdm) ){
            map.put("sjjdm", sjjdm);
        }
        if(StringUtils.isNotBlank(bbh) ){
            map.put("bbh", bbh);
        }
        SJJXX sjjxx= dsd.querySjjxxBySjjdmAndBbh(map);

        return sjjxx;
    }

    //查询数据集未添加的数据元
    @Override
    public PageInfo<SjyxxEntity> querySjyxxBySjjdm(Integer offset, Integer limit, String sjymc, String sjjdm) {
        PageHelper.startPage((offset/limit)+1,limit);
        Map<String, Object> map =new HashMap<>();
        if(StringUtils.isNotBlank(sjymc) ){
            map.put("sjymc", sjymc);
        }
        map.put("sjjdm", sjjdm);
        List<SjyxxEntity> list = dsd.querySjyxxBySjjdm(map);
        PageInfo<SjyxxEntity> page = new PageInfo<SjyxxEntity>(list);
        return page;
    }

    //查询所有的2级数据集分类
    @Override
    public List<SJJXX> queryAllSjjfl() {
        List<SJJXX> list =  dsd.queryAllSjjfl();
        return list;
    }

    @Override
    public List<SjjflEntity> querySjjxxTree() {
        Map<String, Object> map =new HashMap<>();
        List<SjjflEntity> list = dsd.querySjjxxTree();
        return list;
    }

    @Override
    public List<SJJXX> querySjjxxByParam(Map param) {
        return dsd.queryDataSet(param);
    }

    @Override
    public List<SJYML> querySjymlBySjjdms(Map<String, Object> paramMap) {
        return dsd.querySjyml(paramMap);
    }
}
